This invention relates to the provision of distributed data processing services in a data communication network environment and, in particular, to a system for dynamically allocating resources to a processing request that is received from a user terminal that has limited processing capabilities using application modules that are machine-independent and network independent to thereby process the received request in the network yet in a manner that appears to be implemented on the user terminal device.
It is a problem in the field of user terminal devices to provide a reasonable level of processing capability at a reasonable cost and complexity. Personal Computers only support the needs of users who are willing to master the operating systems resident on the personal computer and an associated array of commands and procedures. This investment requires a significant amount of time and incentive. To compound this problem, application developers are creating ever more complex applications that require more computer resources and additional user training. The growth in processing capability and programming complexity is substantially at parity with the price of a Personal Computer, with the complete system cost remaining fairly level, but still beyond the reach of many individuals. In addition, the need to provide data storage capacity, battery power, and the associated hardware interface devices results in a user terminal device that is fairly large for the amount of processing capabilities that are provided.
Further compounding this problem is the fact that operating systems are machine-centric in that they are focused on the architecture of the underlying motherboard, hardware system busses and specific device interfaces. The application programming in such an environment builds layers upon the machine-centric operating system, thereby reducing the portability of the code that is developed. The user is therefore committed to a limited universe of applications based upon the basic operating system that is selected and the various application platforms resident thereon.
Another problem is the varying needs of the user do not coincide with the fixed nature of the personal computer hardware and software configuration. The user typically requires a modest amount of processing capability and only occasionally has a need for a significant additional increment of processing capability. However, to accommodate those infrequent needs for additional processing capability, the user must equip the system with the maximum amount of hardware and software resources that can potentially be needed. In addition, the timewise obsolescence of the user""s system requires relatively frequent system replacements due to the increasing needs of the application programs that the user loads on the personal computer. It is a difficult problem to gradually increase the capabilities of the personal computer or to provide a temporary increase in capacity for the existing system prior to the financial commitment of a replacement system.
Thus, the existing personal computer and application program architectures are intimately coupled and suffer from a number of limitations that both increase the cost of personal computer systems for the user and limit the flexibility of the users to access various applications. The availability of networks to interconnect multiple processors do not address this problem and suffer from the same limitations.
The above described problems are solved and a technical advance achieved in the field by the present distributed network application management system, which provides distributed data processing services to a user in a data communication network environment. This system dynamically allocates resources to a processing request that is received from a user application device, which has limited processing capabilities, by using network based application modules that are machine-independent and network independent to thereby process the received request in the network, yet in a manner that appears to be implemented on the user application device. The distributed network application management system is implemented in a network environment using a kernel that contains the network protocol (e.g. STYX, available from Lucent Technologies). The network processing resources are dynamically configured in the network for the needs of the user application device as capacity becomes available. The applications in this system are distributed via the network without meta code being written for the application. There is no socket layer and the various application modules that are necessary to execute a process are dynamically loaded into the execution stream as needed by the network operating system. The network operating system organizes the resources and creates the name space to bring the network resources to bear on the present computing problem using the mount and bind paradigms.
Thus, the user application device can expand its capabilities via use of the network resources, in a manner that is transparent to the user. The applications that are required to serve a user request are resident on the network and either executed in the network or downloaded only to the degree necessary to the user application device for execution. Thus, the distributed network application management system dynamically binds and mounts system resources as needed for the use of the user application device. The applications are architected to be machine independent and modular, so that only the application modules necessary to process the user request are mounted and executed. The application modules can be located anywhere on the network and execute on any processor that is part of the network. Using the file metaphor and name space operations, application modules that export their interfaces as synthetic file structures can be relocated and accessed from anywhere on the network without change. Application modules that export pure functional interfaces (without data sharing) can also be relocated without change by inserting stub modules interconnected via a generic channel server. The channel server provides a file-like interface providing data transport between modules. The execution of the application module process appears to be local, although the actual execution of the application module is distributed and can dynamically change. The local process that executes on the user application device simply imports the necessary interface module and loads a stub to interface with the channel server. The entire application module is not loaded on the local processor of the user application device, since the processing is managed external to the local processor. The interfaces and stubs are never recompiled for relocation.